/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package co.edu.senaclem.persistencia;

import co.edu.senaclem.modelo.Area;
import co.edu.senaclem.modelo.Dependencia;
import static co.edu.senaclem.persistencia.Persistencia.areadb;
import static co.edu.senaclem.persistencia.Persistencia.con;
import static co.edu.senaclem.persistencia.Persistencia.conectar;
import static co.edu.senaclem.persistencia.Persistencia.desconectar;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import javax.ejb.Stateless;

/**
 *
 * @author anfeles
 */
@Stateless
public class AreaDAO implements IAreaDAO{

    public static ResultSet resSet=null;
    
    @Override
    public Area consultarPorId(int codigo) throws Exception {
        try {
            Area miArea = null;
            if (conectar()) {
                String consulta = "Select * From area where codigoarea='" + codigo + "'";
                //System.out.println("Consulta del aprendiz "+consulta);
                areadb = con.createStatement();
                resSet = areadb.executeQuery(consulta);

                if (resSet.next()) {
                    miArea = new Area();
                    miArea.setCodigo(codigo);
                    miArea.setNombre(resSet.getString("nombrearea"));
                    //se guardan en variables los campos para evitar acceder a resultset ya cerrados
                    //int dependencia = resSet.getInt("codigodependencia");
                    IDependenciaDAO dependenciaDAO=new DependenciaDAO();
                    Dependencia miDependencia=dependenciaDAO.consultarPorId(resSet.getInt("codigodependencia"));                                        
                    miArea.setDependencia(miDependencia);
                   
                }

                resSet.close();
                desconectar();
            }

            return miArea;
        } catch (RuntimeException e) {
            throw e;
        }
    }

    @Override
    public List<Area> consultar() throws Exception {
        try {
            List<Area> areas = new ArrayList<Area>();
            if (conectar()) {
                String consulta = "Select * From area";
                areadb = con.createStatement();
                resSet = areadb.executeQuery(consulta);

                while (resSet.next()) {
                    Area miArea = new Area();                   
                    miArea.setCodigo(resSet.getInt("codigoarea"));
                    miArea.setNombre(resSet.getString("nombrearea"));
                    //se guardan en variables los campos para evitar acceder a resultset ya cerrados
                    //int dependencia = resSet.getInt("codigodependencia");
                    IDependenciaDAO dependenciaDAO=new DependenciaDAO();
                    Dependencia miDependencia=dependenciaDAO.consultarPorId(resSet.getInt("codigodependencia"));                                        
                    miArea.setDependencia(miDependencia);

                    areas.add(miArea);
                }

                resSet.close();
                desconectar();
            }

            return areas;
        } catch (RuntimeException e) {
            throw e;
        }
    }
    
    @Override
    public List<Area> consultar(Integer dependencia) throws Exception {
        try {
            List<Area> areas = new ArrayList<Area>();
            if (conectar()) {
                String consulta = "Select * From area where codigodependencia='"+dependencia+"'";
                areadb = con.createStatement();
                resSet = areadb.executeQuery(consulta);

                while (resSet.next()) {
                    Area miArea = new Area();                   
                    miArea.setCodigo(resSet.getInt("codigoarea"));
                    miArea.setNombre(resSet.getString("nombrearea"));
                    //se guardan en variables los campos para evitar acceder a resultset ya cerrados
                    //int dependencia = resSet.getInt("codigodependencia");
                    IDependenciaDAO dependenciaDAO=new DependenciaDAO();
                    Dependencia miDependencia=dependenciaDAO.consultarPorId(resSet.getInt("codigodependencia"));                                        
                    miArea.setDependencia(miDependencia);

                    areas.add(miArea);
                }

                resSet.close();
                desconectar();
            }

            return areas;
        } catch (RuntimeException e) {
            throw e;
        }
    }
    
}
